package org.example.jwtdemo.utils;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 功能：
 * 作者：白白
 * 日期：2024/9/29 23:06
 */
@Data //@Getter @Setter
@AllArgsConstructor //有参构造器
@NoArgsConstructor //无参构造器
@Builder //Builder模式是一种常用的对象创建的软件设计模式
public class Result {

    public static final String CODE_SUCCESS = "200";
    public static final String CODE_AUTH_ERROR = "401";
    public static final String CODE_SYS_ERROR = "500";

    /**
     * 请求的返回编码 200 401 404 500
     * 编码表示这次请求是成功还是失败
     * 或者说 可以看出失败的类型是什么
     */
    private String code;
    /**
     * msg表示错误的详细信息
     */
    private String msg;
    /**
     * 数据从什么地方返回出去？
     * 就是这个data
     * user Object类型就是User
     * List Object类型就是List
     * Map  Object类型就是Map
     * Object  extend Yushengjun
     */
    private Object data;

//    public static Result success(){//请求成功无数据
//        return new Result(CODE_SUCCESS,"请求成功",null);
//    }

    public static Result loginSuccess(Object data){//登录成功无数据
        return new Result(CODE_SUCCESS,"登录成功",data);
    }

    public static Result success(){//请求成功无数据
       return Result.builder().code(CODE_SUCCESS).msg("请求成功").build();//构建者模式创建链对象
    }

    public static Result success(Object data){//请求成功有数据
        return new Result(CODE_SUCCESS,"请求成功",data);
    }

    public static Result error(){//默认的错误信息方法
        return new Result(CODE_SYS_ERROR,"系统错误",null);
    }

    public static Result error(String msg){//携带msg错误信息的方法
        return new Result(CODE_SYS_ERROR,msg,null);
    }

    public static Result error(String code,String msg){//携带 code 和 msg 错误信息的方法
        return new Result(code,msg,null);
    }


}
